00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DEBITMAP_H
00029 #define DEBITMAP_H
00030
00031 #include "deGlobalTypes.hpp"
00032 #include "deResource.hpp"
00033 #include "deDriver.hpp"
00034 #include "deWorld.hpp"
00035
00036 #if defined(DEBITMAP_DLL_EXPORTS) || defined(DESTINY3D_EXPORT_ALL)
00037 # define BITMAP_API extern "C" DEDLL_EXPORT
00038 #elif defined(DESTINY3D_STATIC_LINK)
00039 # define BITMAP_API extern "C"
00040 #else
00041 # define BITMAP_API extern "C" DEDLL_IMPORT
00042 #endif
00043
00044 #ifdef USING_DESTINY3D
00045 #ifdef _DEBUG
00046 # ifdef DESTINY3D_STATIC_LINK
00047 # pragma comment(lib, "deBitmap_sd")
00048 # pragma comment(lib, "zlib-d")
00049 # pragma comment(lib, "libpng-d")
00050 # else
00051 # pragma comment(lib, "deBitmapd")
00052 # endif //DESTINY3D_STATIC_LINK
00053 #else
00054 # ifdef DESTINY3D_STATIC_LINK
00055 # pragma comment(lib, "deBitmap_s")
00056 # pragma comment(lib, "zlib")
00057 # pragma comment(lib, "libpng")
00058 # else
00059 # pragma comment(lib, "deBitmap")
00060 # endif //DESTINY3D_STATIC_LINK
00061 #endif //_DEBUG
00062 #endif //USING_DESTINY3D
00063
00064
00065 class IdeDriver;
00066 class IdeFileSystem;
00067 class IdeBitmap;
00068 class IdeBitmapProxy;
00069
00070
00071
00072 BITMAP_API deBoolean IdeBitmap_Initialize();
00073
00074 BITMAP_API IdeBitmap* IdeBitmap_CreateBitmap();
00075
00076
00077
00078 BITMAP_API IdeBitmapProxy* IdeBitmap_CreateProxy(IdeResourceBase* FromBitmap = NULL);
00079
00080 BITMAP_API IdeBitmap* IdeBitmap_CreateBitmapWithInfo(long Width, long Height, IdeDriver::BPP Format, deBoolean CubeMap = deFALSE);
00081
00082 BITMAP_API long IdeBitmap_GetRscInterfaceID();
00083
00084 BITMAP_API long IdeBitmapProxy_GetWOInterfaceID();
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 DE3D_INTERFACE(IdeBitmap, IdeResourceBase)
00102 {
00103 protected:
00104
00105 virtual ~IdeBitmap() {}
00106
00107 public:
00108 virtual deBoolean Reset() = 0;
00109 virtual void Cleanup() = 0;
00110
00111
00112 virtual void* GetData(u32 FaceNum = 0) = 0;
00113
00114 virtual long GetWidth() = 0;
00115
00116 virtual long GetHeight() = 0;
00117
00118 virtual IdeDriver::BPP GetFormat() = 0;
00119
00120 virtual long GetBitDepth() = 0;
00121
00122 virtual long GetByteDepth() = 0;
00123
00124 virtual DWORD GetImageSize() = 0;
00125 virtual long GetScalingFactor() = 0;
00126 virtual long GetNumFaces() = 0;
00127
00128 virtual deARGB GetColorAt(long X, long Y) = 0;
00129
00130 virtual void GetFloatColorAt(long X, long Y, deColor & color) = 0;
00131
00132 virtual deBoolean IsRenderTarget() = 0;
00133
00134 virtual long GetMipLevels() = 0;
00135
00136 virtual deBoolean SetData(void *data, long ByteLength, u32 FaceNum = 0) = 0;
00137 virtual void SetWidth(long width) = 0;
00138 virtual void SetHeight(long height) = 0;
00139 virtual void SetFormat(IdeDriver::BPP Format) = 0;
00140 virtual void SetBitDepth(long depth) = 0;
00141 virtual void SetImageSize(long size) = 0;
00142 virtual void SetRenderTarget(deBoolean RenderTarget) = 0;
00143 virtual void SetColorAt(long X, long Y, deARGB Color) = 0;
00144 virtual deBoolean SetNumFaces(long NumFaces = 1) = 0;
00145 virtual void SetMipLevels(long MipLevels = -1) = 0;
00146
00147
00148
00149 virtual deBoolean CopyRect(const IdeBitmap* &Source, deRect *SourceRect, long TargetX, long TargetY) = 0;
00150
00151 virtual deBoolean SaveToFileSystem(IdeFileSystem *FS, const char *filename) = 0;
00152 virtual deBoolean SaveToFile(IdeFile *file) = 0;
00153
00154
00155 virtual void* GetDriverData(long ID) = 0;
00156 virtual deBoolean SetDriverData(long ID, void *Data, IdeDriver * Driver) = 0;
00157
00158
00159 virtual deBoolean ConvertGrayScaleToDot3(long numsamples = 7, deFloat amplify = 0.0f) = 0;
00160
00161 virtual deBoolean BindGrayScaleAsAlphaMap(IdeBitmap *AlphaMap) = 0;
00162 virtual deBoolean DownSampleMIP(void* &source, void* target, long SW, long SH, long SP, long TW, long TH, long TP, IdeDriver::BPP SFormat, IdeDriver::BPP TFormat) = 0;
00163 };
00164
00165
00166
00167 class IdeBitmapProxy : virtual public IdeWorldObject
00168 {
00169 protected:
00170 virtual ~IdeBitmapProxy() {}
00171
00172 public:
00173
00174 virtual void SetBitmap(IdeBitmap* bmp) = 0;
00175
00176 virtual IdeBitmap* GetBitmap() = 0;
00177
00178 virtual void SetFilename(const char* filename) = 0;
00179
00180
00181 virtual void SettingSavePixels(deBoolean Save) = 0;
00182
00183
00184
00185
00186 virtual const char* GetFilename() = 0;
00187 virtual void GetFilenameBuffer(char *buffer, long buffersize) = 0;
00188 virtual long GetWidth() = 0;
00189 virtual long GetHeight() = 0;
00190 virtual IdeDriver::BPP GetFormat() = 0;
00191 };
00192
00193 #endif